package com.hk.demo;

import cn.hutool.core.lang.Assert;
import com.hk.demo.entity.Student;
import org.junit.Test;

import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.DoubleStream;
import java.util.stream.IntStream;
import java.util.stream.Stream;

/**
 * @author: dpb
 * @date: 2022/11/1
 */
public class StreamDemo {


    @Test
    public void test(){
//        List<String> list = Stream.generate(() -> "ss").limit(10).collect(Collectors.toList());
//        System.out.println(list);
//
//
//        IntStream.range(0, 3).mapToObj(i -> "x").forEach(System.out::println);


        List<Student> studentList = new ArrayList<>();
        studentList.add(Student.builder().age("11").name("zs").build());
        studentList.add(Student.builder().age("12").name("ls").build());
        studentList.add(Student.builder().age("13").name("ww").build());

        Map<String, Student> studentMap = studentList.stream().collect(Collectors.toMap(Student::getAge, Function.identity()));
        Map<String, List<Student>> collect = studentList.stream().collect(Collectors.groupingBy(Student::getAge));


        List<Student> builderList = IntStream.rangeClosed(1, 10)
                .mapToObj(i -> Student.builder().age(String.valueOf(i)).build())
                .collect(Collectors.toList());
        System.out.println(builderList);

//        Assert.notNull(null,"builderList不为空");

        List<String> list = Arrays.asList("1", "2", "3");
        try {
            //Arrays.asList 返回的 List 不支持增删操作。
            // Arrays.asList 返回的 List 并不是我们期望的 java.util.ArrayList，
            // 而是 Arrays 的内部类 ArrayList。ArrayList 内部类继承自 AbstractList 类，
            // 并没有覆写父类的 add 方法，而父类中 add 方法的实现，就是抛出 UnsupportedOperationException
            list.add("5");
        } catch (Exception e){
            e.printStackTrace();
        }




    }

}
